//********************************************************************************************************
// Product Name: MapWindow.dll Alpha
// Description:  Low level interfaces that allow separate components to use objects that are defined
//               in completely independant libraries so long as they satisfy the basic interface requirements.
//********************************************************************************************************
// The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); 
// you may not use this file except in compliance with the License. You may obtain a copy of the License at 
// http://www.mozilla.org/MPL/ 
//
// Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
// ANY KIND, either express or implied. See the License for the specificlanguage governing rights and 
// limitations under the License. 
//
// The Original Code is MapWindow.Interfaces
//
// The Initial Developer of this Original Code is Ted Dunsford. Created in August, 2007.
// 
// Contributor(s): (Open source contributors should list themselves and their modifications here). 
//
//********************************************************************************************************
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Drawing2D;
namespace MapWindow.Drawing
{
    /// <summary>
    /// This contains all the properties for drawing a line structure.  This just uses the basic
    /// Dot Net GDI+ drawing methods, so most of the properties listed here are basically just
    /// accessors to properties that already exist on the pen.  More complex drawing can be
    /// specified by simply specifying the pen itself.
    /// </summary>
    public class LineFeatureSymbology
    {
        #region Variables


        protected Pen _FillPen;
        // This can be confusing... technically we draw the line once with the border pen
        // and then draw the line again using the FillPen.
        protected Pen _BorderPen;
        protected LineStyles _LineStyle;
        protected Pen _Pen;
        protected float _Width;
    
        #endregion

        #region Methods

      

        #endregion

        #region Properties
        

       


        /// <summary>
        /// Specifies whether the line will be drawn using straight line segments, bezier splines or
        /// cardinal splines.
        /// </summary>
        LineStyles LineStyle
        {
            get { return _LineStyle; }
            set { _LineStyle = value; }
        }

        /// <summary>
        /// Specifies a System.Drawing Pen to use when drawing this line feature.  All the other line
        /// related characteristics actually control this, and only the most commonly used members
        /// are shown at the symbology level.  There are several other more advanced options that
        /// can be customized here, like using textures, hatching etc.
        /// </summary>
        Pen Pen
        {
            get { return _Pen; }
            set {
                _Pen = value;
              
                _Width = value.Width;
            }
        }

        /// <summary>
        /// Specifies the width of the pen using to draw the line.
        /// </summary>
        float Width
        {
            get { return _Width; }
            set { _Width = value; }
        }

        #endregion

    }
}
